Nginx proxy manager
Nginx 的工作流程
实际上 Nginx 作为一个代理服务器,本质上就是处理网络请求。或者说做的是负载均衡, 而最为实用的在我们的网站建设中实际上用的是nginx 的反向代理功能
Nginx Proxy Manager 的安装
配置Nginx过于麻烦,现在通过 Nginx Proxy Manager 配置管理则会方便多了.
实际上 nginx proxy manager 对80 和 443 端口过去将 nginx 的工作交给它去处理, 它实际上是运行在 docker 中的一个服务.
具体的实践
Requirements
- Cloud server with IP address(Example 125.125.125.125)
- Hostname (example.com)
安装 docker 和 docker-compsoe
install Docker
安装 nginx proxy manager
mkdir nginx-proxy-manager
cd nginx-proxy-manager
vim docker-compose.yml
主要是持久化存储,将设置都放在 nginx-proxy-manager 文件夹中,便于以后的迁移
version: "3"
services:
nginx_manager:
# network_mode: web
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80' # 80 端口 到 80 端口
- '443:443' # 443 端口到443 端口
- '81:81' # 81 端口默认的web管理UI 端口,可以映射到任何 example: '2134:81'
environment:
DB_MYSQL_HOST: "db"
DB_MYSQL_PORT: 3306
DB_MYSQL_USER: "npm"
DB_MYSQL_PASSWORD: "npm"
DB_MYSQL_NAME: "npm"
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
depends_on:
- db
db:
# network_mode: web
image: 'jc21/mariadb-aria:latest'
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: 'npm'
MYSQL_DATABASE: 'npm'
MYSQL_USER: 'npm'
MYSQL_PASSWORD: 'npm'
volumes:
- ./data/mysql:/var/lib/mysql
运行
docker-compose up -d
这个时候可以打开portainer 界面,发现已经成功运行两个容器
nginx_proxy_manager_db_1 和 nginx_proxy_manager_nginx_manager_1
网页打开 http://$:81
至此, 容器构建基本完成
具体使用nginx proxy manager 去构建nginx 服务
这里我主要是构建了Blog 服务和git 服务
可以看到,我构建的服务主要有
Service
- gogs(git.mingzailao.live)
- nginx-proxy-manager(heimdall.mingzailao.live,这个二级域名没有用,后来觉得heimdall 首页有点鸡肋,便用来给了管理nginx 服务)
- wordpress Blog (mingzailao.live, www.mingzalao.live)
- 在线latex项目构建(overleaf.mingzailao.live, 这个没有放在Cloud server 上面, 使用了frp 服务放在本地,这个过后再讲吧)
- Docker UI(Portainer, portainer.mingzailao.live)
heimdall.mingzailao.live
- 注意本地端口的81端口是UI 界面, 我们想要通过 heimdall.mingzailao.live 访问${IP}:81
- 申请SSL证书
- 可以直接用自带的Let’s Encrypt
- Custom SSL Certificate From DNSPod(Tencent Cloud)
- Add Proxy Host
- 这里选择刚才申请的证书.
- Save
现在访问 https://heimdall.mingzailao.live 可以直接访问nginx-proxy-manager 的UI 界面了(也就是 http://$:81)
其余的服务同理
- 注意开启腾讯云防火墙端口
- 如果需要部署frp, 主要就是将另一台服务器的端口转发 同理将转发过来的端口配置好 Proxy Host 即可.